/*
java的枚举类是一个特殊的类，一般表示一组常量，比如一年的4个季节，一年的12个月份，一周的7天等
使用enum关键子来定义，各个常量使用,逗号分隔，最后跟上分号。
也可以把enum枚举类声明在内部类中。
枚举类型其实也是普通的类，但是继承自Enum类，为了方便识别使用，就写成了enum类型。
我们定义的每一个状态其实就是一个public static final的Status类型成员变量
可以使用javap Status.class反编译来查看代码（idea反编译的看不出来）
PS D:\project\java\learn-java\out\production\learn-java\com\test\enumClass> javap .\Status.class
Compiled from "Status.java"
public final class com.test.enumClass.Status extends java.lang.Enum<com.test.enumClass.Status> {
  public static final com.test.enumClass.Status learn;
  public static final com.test.enumClass.Status sport;
  public static final com.test.enumClass.Status sing;
  public static final com.test.enumClass.Status dance;
  public static final com.test.enumClass.Status ball;
  public static com.test.enumClass.Status[] values();
  public static com.test.enumClass.Status valueOf(java.lang.String);
  static {};
}

 */
package com.test.enumClass;

public enum Status {

    //learn,sport,sing,dance,ball; //预定义好几种不同的学生状态
    //上面知道了枚举类型也是普通的类，那么也可以给枚举类型添加独有的成员方法
    learn("学习"), sport("运动"), sing("唱歌"), dance("跳舞"), ball("打球");
    //无参构造方法被覆盖，创建枚举需要添加参数，本质就是调用的构造方法。
    //怎么使用这个枚举类，看Student.java

    private final String name;  //给枚举类型添加的新的成员变量
    Status(String name) {  //覆盖原有构造方法（枚举类型的构造方法只能是private，只能内部使用）要求在一开始在类内部创建实例（对象），不能在外部创建对象（实例）
        this.name = name;
    }

    public String getName(){  //获取封装的成员变量
        return name;
    }
}
